package controlador;
import vista.FormCategoria;
import controlador.*;
import modelo.Categoria;
import modelo.Conexion;
import modelo.CategoriaDAO;
import modelo.Producto;

import java.awt.Color;
import java.awt.event.*;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ControlCategoria implements ActionListener{
	
	private FormCategoria fc;
	private KeyListener kl;
	
	public ControlCategoria()
	{
		
		super();
		this.fc = new FormCategoria();
		this.fc.addListener(this,kl);
		this.fc.setVisible(true);
		fc.setLocationRelativeTo(null);
		Limpiar();
		
	}
	
	public class KeyL implements KeyListener
	{
		public void keyPressed(KeyEvent k){}
		public void keyReleased(KeyEvent k){}
		public void keyTyped(KeyEvent k)
		{
		}
	};
	
	public void Limpiar(){
		fc.setTxtcodCategoria("");
		fc.setTxtDescripcion("");
		fc.EnabledbntGuardar(false);
		fc.EnabledBntEliminar(false);
		fc.getTxtcodCategoria().enable(true);
		fc.getTxtDescripcion().enable(false);
	}
    
	public boolean BuscarCategoria(boolean most){
		
		if(fc.getTxtcodCategoria().getText().equals(""))
		{
			fc.mostrarMensaje("Ingrese un codigo por favor!");
	        Limpiar();
	        return false;
		}
		else
		{
			try
			{
				CategoriaDAO DAO = new CategoriaDAO();
				ResultSet registro = DAO.BuscarCategoria(fc.getTxtcodCategoria().getText());
	    		if(registro.next())
	    		{
	    			Integer codcategoria = registro.getInt("codcategoria");
					String descripcion = registro.getString("descripcion");
					Categoria categoria = new Categoria(codcategoria, descripcion);
					fc.setTxtcodCategoria(codcategoria.toString()); 
					fc.setTxtDescripcion(descripcion);
					fc.EnabledBntEliminar(true);
					fc.EnabledtxtcodCategoria(false);
					fc.EnabledbntGuardar(false);
					return true;
	    		 }
	    		else
	    		{
	    			fc.mostrarMensaje("La categoria no existe");
	    			fc.getTxtcodCategoria().enable(false);
	    			fc.getTxtDescripcion().enable(true);
	    			fc.EnabledbntGuardar(true);
	    			fc.EnabledBntEliminar(false);
	    			fc.EnabledbntBuscar(false);
	    		}
			 }
			catch (SQLException f) {
				f.printStackTrace();
			}
			return false;
		}
	}

	public void GuardarCategoria(){
		if(fc.getTxtDescripcion().getText().equals("") )    		    
		    fc.mostrarMensaje("Llene todos los campos");
		else
		{
    		Categoria categoria = new Categoria
    		(Integer.parseInt(fc.getTxtcodCategoria().getText()), 
    		 fc.getTxtDescripcion().getText());

    		CategoriaDAO DAO = new CategoriaDAO();
    		DAO.InsertarCategoria(categoria.getCodcategoria(),categoria.getDescripcion());
    		
    		fc.mostrarMensaje("Categoria registrada con éxito!");
    	    fc.EnabledbntBuscar(true);
    		Limpiar();
		}
	}
	
	public void EliminarCategoria(){
		CategoriaDAO DAO = new CategoriaDAO();
		DAO.EliminarCategoria(fc.getTxtcodCategoria().getText());
		
		fc.mostrarMensaje("Categoria Eliminada con éxito!");
		Limpiar();
	}
	
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("B"))
			BuscarCategoria(true);
    	else if (e.getActionCommand().equals("Guardar"))
    		GuardarCategoria();
		else if (e.getActionCommand().equals("Eliminar"))
			EliminarCategoria();
		else if(e.getActionCommand().equals("Cancelar"))
		{
			Limpiar();
			fc.EnabledbntBuscar(true);
		}
		else if(e.getActionCommand().equals("S"))
			fc.dispose();	
	}

}
